;##################################
;命令：
;nasm -f elf64 day4_0vector_0add_1ymm_0int.asm -o main.o && gcc main.o -o main -lc -no-pie && ./main
;输出：
;Value in arr[0] is 10.
;Value in arr[1] is 12.
;Value in arr[2] is 14.
;Value in arr[3] is 16.
;Value in arr[4] is 18.
;Value in arr[5] is 20.
;Value in arr[6] is 22.
;Value in arr[7] is 24.
;##################################
extern printf

section .data
	msg: db `Value in arr[%d] is %d.\n`, 0
	arr0: dd 1, 2, 3, 4, 5, 6, 7, 8
	arr1: dd 9, 10, 11, 12, 13, 14, 15, 16

section .text
	global main

main:
	push rbp
	mov rbp, rsp

;####################################
	vmovdqu ymm0, [arr0]
	vmovdqu ymm1, [arr1]
	vpaddd ymm0, ymm0, ymm1
	vmovdqu [arr0], ymm0
;####################################

;##################################################
	;打印
	mov ebx, 0
	jmp compare

execute:
	mov rdi, msg
	movsxd rsi, ebx
	movsxd rdx, dword [arr0 + 4 * ebx]
	call printf

	inc ebx

compare:
	cmp ebx, 8
	jl execute
;##################################################

	mov eax, 0
	leave
	ret
